home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / CC_C / 0574.ZIP / D2IOH.INC < prev    next >
Text File  |  1986-07-25  |  2KB  |  119 lines

  1.  
  2. ;    D2IOH.INC - include for .ASM files in d2io system - jwk - 07/25/86
  3. ;    duplicates the definitions in D2IO.H used by C source files
  4.  
  5. EOF    equ    (-1)
  6. NULL    equ    0
  7. YES    equ    1
  8. NO    equ    0
  9. .xlist
  10.  
  11. ftbdef    macro    defftb
  12. if    defftb
  13.     public    _ftb
  14. _ftb    ftb    <,rdbit,,>        ;stdin  - preopened for read only
  15.     ftb    <,wrbit,,>        ;stdout - preopened for write only
  16.     ftb    <,wrbit,,>        ;stderr - preopened for write only
  17.     ftb    <,rdbit+wrbit,,>    ;stdaux - preopened for read/write
  18.     ftb    <,rdbit+wrbit,,>    ;stdlst - preopened for read/write
  19.     rept    15
  20.     ftb    <,,,>        ;;files - not open yet
  21.     endm
  22. else
  23.     extv    _ftb, byte
  24. endif
  25.     endm
  26.  
  27. hdl    macro    streamptr
  28.     local    j1, j2
  29.  
  30.     mov    ax, streamptr
  31.     sub    ax, stdin
  32.     js    j1        ; too low
  33.     mov    bx, type ftb
  34.     div    bx
  35.     cmp    ax, 20        ;;DOS limit
  36.     jb    j2        ; valid handle
  37. j1:    mov    ax, eof        ; pointer bad
  38. j2    label    near
  39.  
  40.     endm
  41.  
  42. getftb    macro    stream, item, dest
  43.     havtyp = 0
  44. ifidn    <item>, <ugc>
  45.     mov    si, stream
  46.     mov    dest, [si]
  47.     havtyp = 1
  48. endif
  49. ifidn    <item>, <mode>
  50.     mov    si, stream
  51.     mov    dest, byte ptr item[si]
  52.     havtyp = 1
  53. endif
  54. ifidn    <item>, <crflg>
  55.     mov    si, stream
  56.     mov    dest, byte ptr item[si]
  57.     havtyp = 1
  58. endif
  59. ifidn    <item>, <ercd>
  60.     mov    si, stream
  61.     mov    dest, byte ptr item[si]
  62.     havtyp = 1
  63. endif
  64. ife    havtyp
  65.     error    item is unknown
  66. endif
  67.     endm
  68.  
  69. putftb    macro    stream, item, src
  70.     havtyp = 0
  71. ifidn    <item>, <ugc>
  72.     mov    si, stream
  73.     mov    [si], src
  74.     havtyp = 1
  75. endif
  76. ifidn    <item>, <mode>
  77.     mov    si, stream
  78.     mov    byte ptr item[si], src
  79.     havtyp = 1
  80. endif
  81. ifidn    <item>, <crflg>
  82.     mov    si, stream
  83.     mov    byte ptr item[si], src
  84.     havtyp = 1
  85. endif
  86. ifidn    <item>, <ercd>
  87.     mov    si, stream
  88.     mov    byte ptr item[si], src
  89.     havtyp = 1
  90. endif
  91. ife    havtyp
  92.     error    item is unknown
  93. endif
  94.     endm
  95.  
  96. ftb    struc
  97. ugc    dw    -1        ; unget character storage
  98. mode    db    0        ; mode bits defined by mdbit
  99. crflg    db    0        ; flag = 1 if last char was CR
  100. ercd    db    0        ; DOS error code if errbit==1
  101. ftb    ends
  102.  
  103. mdbit    record    err:1, ef:1, raw:1, wr:1, rd:1
  104. .list
  105.  
  106. rdbit    = mask rd
  107. wrbit    = mask wr
  108. rawbit    = mask raw
  109. eofbit    = mask ef
  110. errbit    = mask err
  111. dirty    = 128
  112.  
  113. stdin    equ    offset _ftb[           0]
  114. stdout    equ    offset _ftb[    type ftb]
  115. stderr    equ    offset _ftb[2 * type ftb]
  116. stdaux    equ    offset _ftb[3 * type ftb]
  117. stdlst    equ    offset _ftb[4 * type ftb]
  118.  
  119.